package cn.zxy.mapper;

import cn.zxy.model.User;
import cn.zxy.sqldb.ReturnSql;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface GUserMapper {


//    @UpdateProvider
//    @InsertProvider
//    @DeleteProvider
//    type:对应的存在sql语句的类
//    method:表示定义的返回sql语句方法名
//    如果里面传入参数超出1个的话  必须是map集合
//    方法的访问权限必须是public
//    方法的返回值必须是拼接好的字符串

    //    @Select("select * from user")
//    @Select 和 @SelectProvider 有什么区别？
//    select 在接口方法上直接定义sql语句
    //SelectProvider 需要加载外部定义好的sql语句，可以直接引用过来
    @SelectProvider(type = ReturnSql.class,method = "getSelectAll")
    public List<User> selectAll();

    @SelectProvider(type = ReturnSql.class,method = "getTrendsUser")
    public List<User> trendsUser(User user);

    @SelectProvider(type = ReturnSql.class,method = "getLikeUser")
    public List<User> findLike(User user);

    @InsertProvider(type = ReturnSql.class,method = "SetInsert")
    public Integer insert(User user);

//    @UpdateProvider(type = ReturnSql.class,method = "SetUpdate")
//    public Integer update(User user);

    @UpdateProvider(type = ReturnSql.class,method = "DTUpdate")
    public Integer update(User user);

//    @DeleteProvider(type = ReturnSql.class,method = "Delete")
//    public Integer delete(Integer id);

    @DeleteProvider(type = ReturnSql.class,method = "DeleteA")
    public Integer delete(@Param("id") Integer id,@Param("address") String address);






}
